
import { visualizer } from 'rollup-plugin-visualizer';
const Timestamp = new Date().getTime()

export default defineNuxtConfig({
  app: {
    head: {
      title: 'html、css、js、javascript、typescript、vue、webpack、vite技术学习',
      htmlAttrs: {
        lang: 'en'
      },
      meta: [
        { charset: 'utf-8' },
        { name: 'viewport', content: 'width=device-width, initial-scale=1' },
        { name: 'keywords', content: 'html、css、js、javascript、typescript、vue、webpack、vite' },
        { name: 'description', content: 'html、css、js、javascript、typescript、vue、webpack、vite技术学习' },
        { name: 'format-detection', content: 'telephone=no' },
        { name: 'baidu-site-verification', content: 'codeva-Ij4JeR8t75' }

      ],
      link: [
        { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
      ]

    }
  },

  modules: ['@bg-dev/nuxt-naiveui'],
  plugins: [
    {src: '~/plugins/axios.ts', ssr: false},
  ],

  compatibilityDate: '2024-11-01',
  devtools: { enabled: true },
  css: ['~/assets/css/normalize.css', "~/assets/css/naive.css"],
  runtimeConfig: {
    public: {
      baseURL: process.env.NUXT_BASE_URL
    }
  },

  // 这块配置要写上
  server: {
    port: 3001,//这块要自定义,否则多个肯定有端口冲突
    host: '0.0.0.0', // 注意：这里有个坑，host 写成127.0.0.1 无法访问
  },

  vite: {
    plugins: [
      visualizer({
        filename: './.nuxt/dist/stats.html', // 分析报告的输出路径
        open: true, // 是否自动打开报告
        gzipSize: true, // 是否显示gzip后的体积
      })
    ]
  },

  // --analyze
  build: {
    minify: 'esbuild', // 使用 esbuild 进行压缩
    // terserOptions: {
    //   compress: {
    //     drop_console: true, // 移除 console
    //   },
    // },
    // server: {
    //   fs: {
    //     strict: true, // 启用文件系统缓存，提高文件读取速度
    //   },
    // },
    // rollupOptions: {
    //   output: {
    //     manualChunks(id: string | string[]) {
    //       if (id.includes('node_modules')) {
    //         return id.toString().split('node_modules/')[1].split('/')[0].toString();
    //       }
    //     },
    //   },
    // },
    extend(config, ctx) {
      config.output.filename = `js/[name].${Timestamp}.js` // 每次构建打包时给文件名加上时间戳，保证版本更新时与上版本文件名不一样
      config.output.chunkFilename = `js/[name].${Timestamp}.js`
    },
    optimization: {
      minimize: true,
      minimizer: [
        // new CssMinimizerPlugin(),
      ],
      splitChunks: { // 生成 chunk 的最小体积（以 bytes 为单位）
        chunks: "all",
        automaticNameDelimiter: "-",
        maxSize: 102400,
        cacheGroups: {
          vendors: {
            test: /[\\/]node_modules[\\/]/,
            priority: -10, //优先级
            reuseExistingChunk: true,
          },
          common: {
            minChunks: 2,
            priority: -20, //优先级
            reuseExistingChunk: true,
          },
        },
      },
    },
  }

})